#ifndef WIDGET_H
#define WIDGET_H

#include <QMenu>
#include <QWidget>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QLabel>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

#include "CityCodeUtils.h"
#include "Day.h"


class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    void readHttpReply(QNetworkReply *reply);
    void parseWeatherJsonData(QByteArray rawData);//解析天气json数据
    void parseWeatherJsonDataNew(QByteArray rawData);//新的解析天气json数据函数
    void updateUi();//将数据更新到UI界面上
    QString getCItyCodeFromName(QString cityName);//获得城市代码


    void drawHighTempLine();//画高温图
    void drawLowTempLine();//画低温图

protected:
    void mousePressEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);
    bool eventFilter(QObject *watched, QEvent *event);//事件过滤器    bool eventFilter(QObject *watched, QEvent *event);//事件过滤器
private slots:
    void on_btn_Search_clicked();

private:
    Ui::Widget *ui;
    QMenu *menu;
    QPoint mOffset;//偏移值 鼠标与窗口左上角的相对位置

    QNetworkAccessManager *manager;//发起网络请求
    QString strUrl;
    QNetworkReply *reply;//接收网络内容

    CityCodeUtils cityCodeUtils;//声明一下自定义类
    Day days[7];

    QMap<QString, QString> weatherTypeMap;//天气的名称和图片的键值对

    //对下半部分的UI界面进行统一处理
    QList<QLabel*> mDateList;
    QList<QLabel*> mWeekList;
    QList<QLabel*> mIconList;
    QList<QLabel*> mWeaTypeList;
    QList<QLabel*> mAirList;
    QList<QLabel*> mWDList;
    QList<QLabel*> mWFList;
};
#endif // WIDGET_H
